
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>三大特性</title>
</head>
<body>
    
    <script>
        //  封装 ：  函数  对象  类  接口

        // 封装是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。
        // 封装可以被认为是一个保护屏障，防止该类的代码和数据被外部类定义的代码随机访问。
        // 要访问该类的代码和数据，必须通过严格的接口控制。
        // 封装最主要的功能在于我们能修改自己的实现代码，而不用修改那些调用我们代码的程序片段。
        // 适当的封装可以让程式码更容易理解与维护，也加强了程式码的安全性。
            // 遍历功能
        function fn(arr) {
            arr.map(element => {
                console.log(element);
                element * 2;
            });
           
        }

        fn([1,2,3,4,5])

        class Parent {
            name="parent"
            constructor(){
                console.log("我是父函数的构造方法");
                console.log("parent-this",this);
            }
        }

        // const  p = new Parent()
        // console.log(p.name);
        


        

        //  继承:子类继承父类的特征和行为，使得子类对象（实例）具有父类的实例域和方法，或子类从父类继承方法，使得子类具有父类相同的行为。
        // extens

        class Child extends  Parent {
            constructor(){
                console.log("我是子函数的构造方法");
                super()
                console.log('son-this:', this)
            }
        }
        const c = new Child()
        console.log(c);
        console.log(c.name);


        
       
        // 多态 多态是同一个行为具有多个不同表现形式或形态的能力。
        // 多态就是同一个接口，使用不同的实例而执行不同操作
        // 理解意思   子类型的实例指向了父类数据结构
        // const  c1:Parent = new Child()






    </script>
</body>
</html>
